package com.anti.modular.sys.org.service;

import com.anti.commom.pojo.node.AntdBaseTreeNode;
import com.anti.jdbc.support.page.PageParam;
import com.anti.jdbc.support.page.PageResult;
import com.anti.modular.sys.org.entity.SysOrg;
import com.anti.modular.sys.org.param.SysOrgParam;

import java.util.List;

/**
 * @Description TODO
 * @Author anTi
 * @Date 2021-3-11
 */
public interface SysOrgService {

   PageResult page(PageParam pageParam, SysOrgParam sysOrgParam);

   /**
    * 系统组织机构列表
    * @param sysOrgParam 查询参数
    * @return 组织机构列表
    */
   List<SysOrg> list(SysOrgParam sysOrgParam);

   /**
    * 添加系统组织机构
    * @param sysOrgParam 添加参数
    */
   void add(SysOrgParam sysOrgParam);

   /**
    * 删除系统组织机构
    * @param sysOrgParam 删除参数
    */
   void delete(SysOrgParam sysOrgParam);

   /**
    * 编辑系统组织机构
    * @param sysOrgParam 编辑参数
    */
   void edit(SysOrgParam sysOrgParam);

   /**
    * 查看系统组织机构
    * @param sysOrgParam 查看参数
    * @return 组织机构
    */
   SysOrg detail(SysOrgParam sysOrgParam);

   /**
    * 获取系统组织机构树
    * @param sysOrgParam 查询参数
    * @return 系统组织机构树
    */
   List<AntdBaseTreeNode> tree(SysOrgParam sysOrgParam);

   /**
    * 根据数据范围类型获取当前登录用户的数据范围id集合
    * @param dataScopeType 数据范围类型（1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据）
    * @param orgId         组织机构id
    * @return 数据范围id集合
    */
   List<Long> getDataScopeListByDataScopeType(Integer dataScopeType, Long orgId);
}
